package com.shujia.day05;

public class Demo03SuperOperator {
    public static void main(String[] args) {
        /*
            TODO 继承中的构造方法：
                1.对于子类对象在构建时，必须先创建其父类对象
                2.对于子类对象在调用构造方法时，默认需要先调用父类的无参构造
                3.在子类中使用super()调用父类的构造方法，必须要放在子类构造方法的第一行 ？
                    由于必须要先构建父类对象，所以根据代码执行顺序，需要先将父类的构造方法执行完成

            TODO 使用 super 关键字
                 super关键字用于表示父类，可以通过 super()调用父类的构造方法 或者使用 super.调用成员方法或变量

         */
        Son son = new Son("李杨",17);
        son.show();

        System.out.println("===================");
        Zi z = new Zi();
        z.show();

    }
}
/*
    对于一个代码文件中，只能存在有一个 public 修饰的class类
 */

class GrandFather {
    String name;
    int age;

    public GrandFather() {
        System.out.println("爷爷出现了...");
    }

    public final void show() {
        System.out.println("我叫" + name + " 今年：" + age);
    }
}

//final class Father extends GrandFather {
class Father extends GrandFather {
    public Father(String name, int age) {
        super.name = name;
        this.age = age;
        System.out.println("父亲出现了...");
    }
}

class Son extends Father {
    public Son(String name, int age) {
        super(name,age);
        System.out.println("儿子出现了...");
    }

//    @Override
//    public void show() {
//        System.out.println("这是儿子中重新定义的show方法");
//    }
}
class Fu{
    public int num = 10;
    public Fu(){
        System.out.println("fu");
    }
}
class Zi extends Fu{
    public int num = 20;
    public Zi(){
        System.out.println("zi");
    }
    public void show(){
        int num = 30;
        System.out.println(num);
        System.out.println(this.num);
        System.out.println(super.num);
    }
}
/*

class Fu {
		static {
			System.out.println("静态代码块Fu");
		}

		{
			System.out.println("构造代码块Fu");
		}

		public Fu() {
			System.out.println("构造方法Fu");
		}
	}

	class Zi extends Fu {
		static {
			System.out.println("静态代码块Zi");
		}

		{
			System.out.println("构造代码块Zi");
		}

		public Zi() {
			System.out.println("构造方法Zi");
		}
	}


 */